# a1 = 'hello'
# a2 = a1 ' world' 这项功能只能用于两个字面值，不能用于变量或表达式
# print(a2) #SyntaxError: invalid syntax 语法错误
a1 = 'hello'
a2 = a1 + ' world'
print(a2)

# 字符串支持 索引 （下标访问），第一个字符的索引是 0。单字符没有专用的类型，就是长度为一的字符串：
a = 'hello'
print(a[0])
print(a[-5])
print(a[1:3])
print(a[:3])
print(a[1:])
print(a[:])

print(a[-2:])
print(a[:-2])
# 输出结果包含切片开始，但不包含切片结束。因此，s[:i] + s[i:] 总是等于 s
print(a[:3] + a[3:])

# 切片会自动处理越界索引
print(a[2:42])
print(a[42:])

# immutable -- 不可变对象
# 具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。如果必须存储一个不同的值，则必须创建新的对象。它们在需要常量哈希值的地方起着重要作用，例如作为字典中的键。
# a[2] = 'x'
print(a) #TypeError: 'str' object does not support item assignment 赋值错误